/**
 * request  xhr   http
 */
//1. 导入 axios
import axios from "axios";
import NProgress from "nprogress";
import "nprogress/nprogress.css";

//2. 创建 axios 实例
let instance = axios.create({
  baseURL: "http://localhost:3001",
});

//3. 为 instance 添加请求拦截器     config 执行时接收到的就是『配置对象』
instance.interceptors.request.use(
  (config) => {
    //开启 loading 的效果
    NProgress.start();
    //添加 token 请求头
    config.headers.token = 123;
    //添加 class=230619 查询字符串
    config.params = {
      class: 230619
    };
    //在请求拦截器成功回调中, 如果没有遇到问题, 一定要返回 config 配置对象
    return config;
  },
  (err) => {
    //请求拦截器 失败回调
    throw err;
  }
);

//4. 为 instance 添加响应拦截器
instance.interceptors.response.use(
  (response) => {
    //关闭 loading 效果
    NProgress.done();
    //要返回响应的结果
    return response.data;
  },
  (err) => {
    //错误的统一处理
    alert('请求失败, 请稍后再试~~');
    //响应拦截器 失败回调
    throw err;
  }
);

//暴露
export default instance;
